<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./js/vue.js"></script>
    <style>
      ul {
        list-style: none;
      }
    </style>
  </head>
  <body>
    <!-- 
      v-for的基础使用
        1.基于源数据多次渲染元素或模板块，此指令的值，必须使用特定语法 ` item,index in data `或者 ` item,index of data `
        2.item和index都是属于当前列表快内部的数据，在列表块内部都可以直接使用
        3.item是每次遍历出来的值，index是当前值的下标
        4.v-for一定要在列表渲染的元素上添加key属性，用于优化diff算法（如果没有key则新旧DOM默认按照顺序比较，一旦有破坏顺序的操作，则会增加额外的开销），并且不建议key使用index下标（因为按下标来的话，其实还是按照顺序比较的）
        5.类似于v-if，也可以利用带有v-for的 template 来循环渲染一段包含多个元素的内容
        6.v-for可以遍历数组，对象，字符串，数字等等数据格式
     -->
    <div id="app">
      <ul>
        <li v-for="item,index in teachers" :key="item.id">
          <h2>姓名：{{item.name}},下标是{{index}}</h2>
          <p>爱好{{item.hobby}}</p>
        </li>
      </ul>
    </div>
  </body>
</html>
<script>
  Vue.config.productionTip = false;
  const vm = new Vue({
    el: '#app',
    data() {
      return {
        teachers: [
          { id: 1, name: '余维海', hobby: '金城会所' },
          { id: 2, name: '陈伟', hobby: '888号为您服务' },
          { id: 3, name: '老李', hobby: '学习讲课' },
        ],
      };
    },
  });
</script>
